﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Abet.Mcp.Modelo.Entidades;
using Abet.Mcp.Modelo.Servicos;
using System.Threading;

namespace Abet.Mcp.Web.Controllers
{
    public class UsuarioController : Controller
    {
        public ActionResult Index()
        {
            var usuarios = UsuarioServicos.Buscar(string.Empty);    
            return View(usuarios);
        }

        public ActionResult Criar()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Criar(Usuario usuario)
        {
            UsuarioServicos.Criar(usuario);
            ViewBag.Message = "Usuario criado com sucesso!";
            return View();
        }

		[HttpPost]
		public ActionResult Buscar(string termo)
		{
			Thread.Sleep(new Random().Next(4000)); // simular uma latência para ver o "loading" do ajax...
			return PartialView("Partials/BuscaResultado", UsuarioServicos.Buscar(termo));
		}

		public ActionResult Editar(int id)
		{
			return View(UsuarioServicos.Obter(id));
		}

		[HttpPost]
		public ActionResult Editar(Usuario usuario)
		{
			UsuarioServicos.Atualizar(usuario);
			ViewBag.Message = "Usuario atualizado com sucesso!";
			return RedirectToAction("Index");
		}

		public ActionResult Relatorio()
		{
			return File(
				RelatorioExcelServico.ObterRelatorioUsuarios(), 
				"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
				"relatorio-usuarios.xlsx");
		}

		public ActionResult ImportarUsuarios()
		{
			return View();
		}

		[HttpPost]
		public ActionResult ImportarUsuarios(HttpPostedFileBase excel)
		{
			UsuarioServicos.ImportarExcel(excel.InputStream);
			return View();
		}
    }
}
